package com.neutech.solar.entity;

import com.neutech.solar.constant.Constant;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//初始化窗口类
public class AbstractFrame extends Frame{
    public AbstractFrame(String string) throws HeadlessException {
        init(string);
    }

    public AbstractFrame() throws HeadlessException {
    }

    public void init(String str){
        //初始化方法的方法
        //设置窗口大小
        this.setSize(Constant.CONSTANT_WINDOW_WIDTH, Constant.CONSTANT_WINDOW_HEIGHT);
        //设置窗口初始位置,相对于桌面的处于中间
        this.setLocationRelativeTo(null);
        //设置窗口可见
        this.setVisible(true);
        //设置窗口关闭，用匿名内部类
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
        //设置题目
        this.setTitle(str);
        //设置固定
        this.setResizable(false);
        new MyThread().start();

    }
    //设置多线程来实现
    class  MyThread extends Thread{
        @Override
        public void run() {
            while (true){
                repaint();
                try {
                    Thread.sleep(40);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

        }
    }
    Image backImg = null;

    // 重写update()方法，在窗口的里层添加一个虚拟的图片
    @Override
    public void update(Graphics g) {
        if (backImg == null) {
            // 如果虚拟图片不存在，创建一个和窗口一样大小的图片
            backImg = createImage(Constant.CONSTANT_WINDOW_WIDTH, Constant.CONSTANT_WINDOW_HEIGHT);
        }
        // 获取到虚拟图片的画笔
        Graphics backg = backImg.getGraphics();
        Color c = backg.getColor();
        backg.setColor(Color.GRAY);
        backg.fillRect(0, 0, Constant.CONSTANT_WINDOW_WIDTH, Constant.CONSTANT_WINDOW_HEIGHT);
        backg.setColor(c);
        // 调用虚拟图片的paint()方法，每50ms刷新一次
        paint(backg);
        g.drawImage(backImg, 0, 0, null);
    }
}
